6.Analysis
Model 1 – Linear relationship between ratings and
votes. The coefficient for log_votes is negative and highly
significant (β = –0.032, p < .001); thus titles with more votes tend
to have slightly lower average ratings. This would suggest that movies
with more votes have a lower rating overall. However, model fit is very
low (R² = 0.004), indicating the linear model explains little variation.
Moreover, the period controls are significant: Modern films score higher
on average than other periods (+0.17) and Pre-War films have
substantially lower ratings (–0.28).
Model 2 – Testing for nonlinearity (polarization
effect). This model shows that – as expected – that the
relationship between ratings and votes is clearly non-linear: log_votes
is negative (β = –0.56, p < .001) and log_votes² is positive (β =
+0.042, p < .001). This combination indicates a U-shaped relationship
between number of votes and ratings. At low-to-moderate numbers of
votes, more votes are associated with lower ratings. At many votes,
ratings start increasing again. Moreover, the model fit improves notably
(R² = 0.026 vs 0.004 in Model 1) and the ANOVA test confirms that adding
the quadratic term significantly improves fit (F(1, 256976) = 5707.8, p
< .001).
Average rating vs. number of votes, linear and
quadratic log number of votes
htmltools::tags$iframe(src =
“../../gen/output/regression_models.html”, width = “100%”, height =
“600px”)
Model 3 – Moderation by Genre Family. The main
effect of the heavy genre is positive (β = +0.59, p < .001): heavy,
serious genres (drama, war, biography) tend to have higher ratings
overall than escapist genres (comedy, action). The interaction terms are
small yet significant: • log_votes × genre_familyHeavy: negative (β =
–0.056, p < .001) • log_votes² × genre_familyHeavy: positive (β =
+0.0049, p < .001) As such, the U-shaped curve is steeper for heavy
genres; i.e. polarization is more pronounced for heavy titles.
Rating vs. Votes (logged) by Genre (Heavy
vs. Escapist)
Model 4 – Moderation by content type (movies
vs. series). First, series are rated lower on average than movies (β =
–0.26, p < .001).The interaction pattern is opposite to the genre
effect: • log_votes × series: positive (β = +0.299, p < .001) •
log_votes² × series: negative (β = –0.0157, p < .001) The main curve
(for movies) is U-shaped, but for series, these interactions flatten or
even invert the curve.
Rating vs. Votes (logged) by content type (Movie
vs. Serie)
cat(readLines("../../gen/output/regression_models.html"), sep = "\n")
<!DOCTYPE html>
tinytable_k5tmsgu8sdsio0y3n734
<script src="https://cdn.jsdelivr.net/gh/vincentarelbundock/tinytable@main/inst/tinytable.js"></script>
<script>
// Create table-specific functions using external factory
const tableFns_k5tmsgu8sdsio0y3n734 = TinyTable.createTableFunctions("tinytable_k5tmsgu8sdsio0y3n734");
// tinytable span after
window.addEventListener('load', function () {
var cellsToStyle = [
// tinytable style arrays after
{ positions: [ { i: '1', j: 2 }, { i: '2', j: 2 }, { i: '3', j: 2 }, { i: '4', j: 2 }, { i: '5', j: 2 }, { i: '6', j: 2 }, { i: '7', j: 2 }, { i: '8', j: 2 }, { i: '9', j: 2 }, { i: '10', j: 2 }, { i: '11', j: 2 }, { i: '12', j: 2 }, { i: '13', j: 2 }, { i: '14', j: 2 }, { i: '15', j: 2 }, { i: '16', j: 2 }, { i: '17', j: 2 }, { i: '18', j: 2 }, { i: '19', j: 2 }, { i: '20', j: 2 }, { i: '21', j: 2 }, { i: '22', j: 2 }, { i: '23', j: 2 }, { i: '25', j: 2 }, { i: '26', j: 2 }, { i: '1', j: 3 }, { i: '2', j: 3 }, { i: '3', j: 3 }, { i: '4', j: 3 }, { i: '5', j: 3 }, { i: '6', j: 3 }, { i: '7', j: 3 }, { i: '8', j: 3 }, { i: '9', j: 3 }, { i: '10', j: 3 }, { i: '11', j: 3 }, { i: '12', j: 3 }, { i: '13', j: 3 }, { i: '14', j: 3 }, { i: '15', j: 3 }, { i: '16', j: 3 }, { i: '17', j: 3 }, { i: '18', j: 3 }, { i: '19', j: 3 }, { i: '20', j: 3 }, { i: '21', j: 3 }, { i: '22', j: 3 }, { i: '23', j: 3 }, { i: '25', j: 3 }, { i: '26', j: 3 }, { i: '1', j: 4 }, { i: '2', j: 4 }, { i: '3', j: 4 }, { i: '4', j: 4 }, { i: '5', j: 4 }, { i: '6', j: 4 }, { i: '7', j: 4 }, { i: '8', j: 4 }, { i: '9', j: 4 }, { i: '10', j: 4 }, { i: '11', j: 4 }, { i: '12', j: 4 }, { i: '13', j: 4 }, { i: '14', j: 4 }, { i: '15', j: 4 }, { i: '16', j: 4 }, { i: '17', j: 4 }, { i: '18', j: 4 }, { i: '19', j: 4 }, { i: '20', j: 4 }, { i: '21', j: 4 }, { i: '22', j: 4 }, { i: '23', j: 4 }, { i: '25', j: 4 }, { i: '26', j: 4 }, { i: '1', j: 5 }, { i: '2', j: 5 }, { i: '3', j: 5 }, { i: '4', j: 5 }, { i: '5', j: 5 }, { i: '6', j: 5 }, { i: '7', j: 5 }, { i: '8', j: 5 }, { i: '9', j: 5 }, { i: '10', j: 5 }, { i: '11', j: 5 }, { i: '12', j: 5 }, { i: '13', j: 5 }, { i: '14', j: 5 }, { i: '15', j: 5 }, { i: '16', j: 5 }, { i: '17', j: 5 }, { i: '18', j: 5 }, { i: '19', j: 5 }, { i: '20', j: 5 }, { i: '21', j: 5 }, { i: '22', j: 5 }, { i: '23', j: 5 }, { i: '25', j: 5 }, { i: '26', j: 5 } ], css_id: 'tinytable_css_yeuamhow836ckky6pccc',},
{ positions: [ { i: '1', j: 1 }, { i: '2', j: 1 }, { i: '3', j: 1 }, { i: '4', j: 1 }, { i: '5', j: 1 }, { i: '6', j: 1 }, { i: '7', j: 1 }, { i: '8', j: 1 }, { i: '9', j: 1 }, { i: '10', j: 1 }, { i: '11', j: 1 }, { i: '12', j: 1 }, { i: '13', j: 1 }, { i: '14', j: 1 }, { i: '15', j: 1 }, { i: '16', j: 1 }, { i: '17', j: 1 }, { i: '18', j: 1 }, { i: '19', j: 1 }, { i: '20', j: 1 }, { i: '21', j: 1 }, { i: '22', j: 1 }, { i: '23', j: 1 }, { i: '25', j: 1 }, { i: '26', j: 1 } ], css_id: 'tinytable_css_ps3qhawifnqnklaq0l2v',},
{ positions: [ { i: '27', j: 2 }, { i: '27', j: 3 }, { i: '27', j: 4 }, { i: '27', j: 5 } ], css_id: 'tinytable_css_jxkg0i5y6yfdh02mos3e',},
{ positions: [ { i: '27', j: 1 } ], css_id: 'tinytable_css_lld5nzyi8gxexb5idhwo',},
{ positions: [ { i: '24', j: 2 }, { i: '24', j: 3 }, { i: '24', j: 4 }, { i: '24', j: 5 } ], css_id: 'tinytable_css_qdib2uuwy08itjhe3ztl',},
{ positions: [ { i: '24', j: 1 } ], css_id: 'tinytable_css_b7jmpts6knf5fi64imy7',},
{ positions: [ { i: '0', j: 2 }, { i: '0', j: 3 }, { i: '0', j: 4 }, { i: '0', j: 5 } ], css_id: 'tinytable_css_ahtks3djtk86g03kfapk',},
{ positions: [ { i: '0', j: 1 } ], css_id: 'tinytable_css_wxoupf46njf9o3160ywh',},
];
// Loop over the arrays to style the cells
cellsToStyle.forEach(function (group) {
group.positions.forEach(function (cell) {
tableFns_k5tmsgu8sdsio0y3n734.styleCell(cell.i, cell.j, group.css_id);
});
});
});
</script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/vincentarelbundock/tinytable@main/inst/tinytable.css">
<style>
/* tinytable css entries after */
#tinytable_k5tmsgu8sdsio0y3n734 td.tinytable_css_yeuamhow836ckky6pccc, #tinytable_k5tmsgu8sdsio0y3n734 th.tinytable_css_yeuamhow836ckky6pccc { text-align: center }
#tinytable_k5tmsgu8sdsio0y3n734 td.tinytable_css_ps3qhawifnqnklaq0l2v, #tinytable_k5tmsgu8sdsio0y3n734 th.tinytable_css_ps3qhawifnqnklaq0l2v { text-align: left }
#tinytable_k5tmsgu8sdsio0y3n734 td.tinytable_css_jxkg0i5y6yfdh02mos3e, #tinytable_k5tmsgu8sdsio0y3n734 th.tinytable_css_jxkg0i5y6yfdh02mos3e { position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: black; --line-color-left: black; --line-color-right: black; --line-color-top: black; --line-width-bottom: 0.1em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: center }
#tinytable_k5tmsgu8sdsio0y3n734 td.tinytable_css_lld5nzyi8gxexb5idhwo, #tinytable_k5tmsgu8sdsio0y3n734 th.tinytable_css_lld5nzyi8gxexb5idhwo { position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: black; --line-color-left: black; --line-color-right: black; --line-color-top: black; --line-width-bottom: 0.1em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: left }
#tinytable_k5tmsgu8sdsio0y3n734 td.tinytable_css_qdib2uuwy08itjhe3ztl, #tinytable_k5tmsgu8sdsio0y3n734 th.tinytable_css_qdib2uuwy08itjhe3ztl { position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: black; --line-color-left: black; --line-color-right: black; --line-color-top: black; --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: center }
#tinytable_k5tmsgu8sdsio0y3n734 td.tinytable_css_b7jmpts6knf5fi64imy7, #tinytable_k5tmsgu8sdsio0y3n734 th.tinytable_css_b7jmpts6knf5fi64imy7 { position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: black; --line-color-left: black; --line-color-right: black; --line-color-top: black; --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: left }
#tinytable_k5tmsgu8sdsio0y3n734 td.tinytable_css_ahtks3djtk86g03kfapk, #tinytable_k5tmsgu8sdsio0y3n734 th.tinytable_css_ahtks3djtk86g03kfapk { position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 1; --line-color-bottom: black; --line-color-left: black; --line-color-right: black; --line-color-top: black; --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: center }
#tinytable_k5tmsgu8sdsio0y3n734 td.tinytable_css_wxoupf46njf9o3160ywh, #tinytable_k5tmsgu8sdsio0y3n734 th.tinytable_css_wxoupf46njf9o3160ywh { position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 1; --line-color-bottom: black; --line-color-left: black; --line-color-right: black; --line-color-top: black; --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: left }
</style>
<div class="container">
<table class="tinytable" id="tinytable_k5tmsgu8sdsio0y3n734" style="width: auto; margin-left: auto; margin-right: auto;" data-quarto-disable-processing='true'>
<caption>Regression Models: Ratings vs Votes</caption>
<thead>
<tr>
<th scope="col" data-row="0" data-col="1"> </th>
<th scope="col" data-row="0" data-col="2">Linear</th>
<th scope="col" data-row="0" data-col="3">Quadratic</th>
<th scope="col" data-row="0" data-col="4">Genre Interaction</th>
<th scope="col" data-row="0" data-col="5">Type Interaction</th>
</tr>
</thead>
<tfoot><tr><td colspan='5'>+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001</td></tr></tfoot>
<tbody>
<tr>
<td data-row="1" data-col="1">(Intercept)</td>
<td data-row="1" data-col="2">6.362***</td>
<td data-row="1" data-col="3">7.838***</td>
<td data-row="1" data-col="4">7.561***</td>
<td data-row="1" data-col="5">7.964***</td>
</tr>
<tr>
<td data-row="2" data-col="1"></td>
<td data-row="2" data-col="2">(0.012)</td>
<td data-row="2" data-col="3">(0.023)</td>
<td data-row="2" data-col="4">(0.032)</td>
<td data-row="2" data-col="5">(0.023)</td>
</tr>
<tr>
<td data-row="3" data-col="1">log_votes</td>
<td data-row="3" data-col="2">−0.032***</td>
<td data-row="3" data-col="3">−0.561***</td>
<td data-row="3" data-col="4">−0.523***</td>
<td data-row="3" data-col="5">−0.613***</td>
</tr>
<tr>
<td data-row="4" data-col="1"></td>
<td data-row="4" data-col="2">(0.002)</td>
<td data-row="4" data-col="3">(0.007)</td>
<td data-row="4" data-col="4">(0.011)</td>
<td data-row="4" data-col="5">(0.008)</td>
</tr>
<tr>
<td data-row="5" data-col="1">periodModern</td>
<td data-row="5" data-col="2">0.174***</td>
<td data-row="5" data-col="3">0.164***</td>
<td data-row="5" data-col="4"></td>
<td data-row="5" data-col="5"></td>
</tr>
<tr>
<td data-row="6" data-col="1"></td>
<td data-row="6" data-col="2">(0.010)</td>
<td data-row="6" data-col="3">(0.010)</td>
<td data-row="6" data-col="4"></td>
<td data-row="6" data-col="5"></td>
</tr>
<tr>
<td data-row="7" data-col="1">periodPost-War</td>
<td data-row="7" data-col="2">0.056***</td>
<td data-row="7" data-col="3">0.045***</td>
<td data-row="7" data-col="4"></td>
<td data-row="7" data-col="5"></td>
</tr>
<tr>
<td data-row="8" data-col="1"></td>
<td data-row="8" data-col="2">(0.011)</td>
<td data-row="8" data-col="3">(0.011)</td>
<td data-row="8" data-col="4"></td>
<td data-row="8" data-col="5"></td>
</tr>
<tr>
<td data-row="9" data-col="1">periodPre-War</td>
<td data-row="9" data-col="2">−0.279***</td>
<td data-row="9" data-col="3">−0.348***</td>
<td data-row="9" data-col="4"></td>
<td data-row="9" data-col="5"></td>
</tr>
<tr>
<td data-row="10" data-col="1"></td>
<td data-row="10" data-col="2">(0.032)</td>
<td data-row="10" data-col="3">(0.032)</td>
<td data-row="10" data-col="4"></td>
<td data-row="10" data-col="5"></td>
</tr>
<tr>
<td data-row="11" data-col="1">log_votes2</td>
<td data-row="11" data-col="2"></td>
<td data-row="11" data-col="3">0.042***</td>
<td data-row="11" data-col="4">0.040***</td>
<td data-row="11" data-col="5">0.045***</td>
</tr>
<tr>
<td data-row="12" data-col="1"></td>
<td data-row="12" data-col="2"></td>
<td data-row="12" data-col="3">(0.001)</td>
<td data-row="12" data-col="4">(0.001)</td>
<td data-row="12" data-col="5">(0.001)</td>
</tr>
<tr>
<td data-row="13" data-col="1">genre_familyHeavy</td>
<td data-row="13" data-col="2"></td>
<td data-row="13" data-col="3"></td>
<td data-row="13" data-col="4">0.589***</td>
<td data-row="13" data-col="5"></td>
</tr>
<tr>
<td data-row="14" data-col="1"></td>
<td data-row="14" data-col="2"></td>
<td data-row="14" data-col="3"></td>
<td data-row="14" data-col="4">(0.042)</td>
<td data-row="14" data-col="5"></td>
</tr>
<tr>
<td data-row="15" data-col="1">log_votes × genre_familyHeavy</td>
<td data-row="15" data-col="2"></td>
<td data-row="15" data-col="3"></td>
<td data-row="15" data-col="4">−0.055***</td>
<td data-row="15" data-col="5"></td>
</tr>
<tr>
<td data-row="16" data-col="1"></td>
<td data-row="16" data-col="2"></td>
<td data-row="16" data-col="3"></td>
<td data-row="16" data-col="4">(0.014)</td>
<td data-row="16" data-col="5"></td>
</tr>
<tr>
<td data-row="17" data-col="1">log_votes2 × genre_familyHeavy</td>
<td data-row="17" data-col="2"></td>
<td data-row="17" data-col="3"></td>
<td data-row="17" data-col="4">0.005***</td>
<td data-row="17" data-col="5"></td>
</tr>
<tr>
<td data-row="18" data-col="1"></td>
<td data-row="18" data-col="2"></td>
<td data-row="18" data-col="3"></td>
<td data-row="18" data-col="4">(0.001)</td>
<td data-row="18" data-col="5"></td>
</tr>
<tr>
<td data-row="19" data-col="1">typeseries</td>
<td data-row="19" data-col="2"></td>
<td data-row="19" data-col="3"></td>
<td data-row="19" data-col="4"></td>
<td data-row="19" data-col="5">−0.274***</td>
</tr>
<tr>
<td data-row="20" data-col="1"></td>
<td data-row="20" data-col="2"></td>
<td data-row="20" data-col="3"></td>
<td data-row="20" data-col="4"></td>
<td data-row="20" data-col="5">(0.052)</td>
</tr>
<tr>
<td data-row="21" data-col="1">log_votes × typeseries</td>
<td data-row="21" data-col="2"></td>
<td data-row="21" data-col="3"></td>
<td data-row="21" data-col="4"></td>
<td data-row="21" data-col="5">0.302***</td>
</tr>
<tr>
<td data-row="22" data-col="1"></td>
<td data-row="22" data-col="2"></td>
<td data-row="22" data-col="3"></td>
<td data-row="22" data-col="4"></td>
<td data-row="22" data-col="5">(0.018)</td>
</tr>
<tr>
<td data-row="23" data-col="1">log_votes2 × typeseries</td>
<td data-row="23" data-col="2"></td>
<td data-row="23" data-col="3"></td>
<td data-row="23" data-col="4"></td>
<td data-row="23" data-col="5">−0.016***</td>
</tr>
<tr>
<td data-row="24" data-col="1"></td>
<td data-row="24" data-col="2"></td>
<td data-row="24" data-col="3"></td>
<td data-row="24" data-col="4"></td>
<td data-row="24" data-col="5">(0.001)</td>
</tr>
<tr>
<td data-row="25" data-col="1">R2</td>
<td data-row="25" data-col="2">0.004</td>
<td data-row="25" data-col="3">0.026</td>
<td data-row="25" data-col="4">0.049</td>
<td data-row="25" data-col="5">0.086</td>
</tr>
<tr>
<td data-row="26" data-col="1">R2 Adj.</td>
<td data-row="26" data-col="2">0.004</td>
<td data-row="26" data-col="3">0.026</td>
<td data-row="26" data-col="4">0.049</td>
<td data-row="26" data-col="5">0.086</td>
</tr>
<tr>
<td data-row="27" data-col="1">Num.Obs.</td>
<td data-row="27" data-col="2">257053</td>
<td data-row="27" data-col="3">257053</td>
<td data-row="27" data-col="4">257075</td>
<td data-row="27" data-col="5">257075</td>
</tr>
</tbody>
</table>
</div>
<!-- postamble start -->